package main

import "fmt"

type Person struct {
	Name string
	Age  int
}

func main() {
	//结构体的实例化
	//1直接声明
	var p1 Person = Person{
		Name: "dddd",
		Age:  120,
	}
	fmt.Println(p1)

	var p2 = Person{"dddd", 11} //2值列表初始化
	fmt.Println(p2)

	var p3 *Person = new(Person)
	//new关键字是用来分配内存的函数
	//，new(Type)作用是为T类型分配并清零一块内存，
	//并将这块内存地址作为结果返回。
	//也就是说new(T)会为类型为T的新项分配已置零的内存空间，并返回它的地址。
	(*p3).Name = "smith"
	p3.Name = "john"

	(*p3).Age = 20
	p3.Age = 30
	fmt.Println(p3)

}
